home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / program / swags_z.zip / SCROLL.SWG / 0015_EGA-VGA Slider.pas < prev    next >
Pascal/Delphi Source File  |  1994-01-27  |  1KB  |  48 lines

  1. Program VGASLIDE; {requirements TP6 or higher + register-compatible VGA}
  2.  
  3.  
  4. uses CRT,grstuff;
  5.  
  6. var
  7.   t,slide:word;
  8.   ch:char;
  9.  
  10. Procedure VgaBase(Xscroll,Yscroll:integer);
  11.   var dum:byte;
  12.  Begin
  13.   Dec(SLIDE,(Xscroll+320*Yscroll));   { slide scrolling state         }
  14.   Port[$03d4]:=13;                    { LO register of VGAMEM offset  }
  15.   Port[$03d5]:=(SLIDE shr 2) and $FF; { use 8 bits:  [9..2]           }
  16.   Port[$03d4]:=12;                    { HI register of VGAMEM offset  }
  17.   Port[$03d5]:= SLIDE shr 10;         { use 6 bits   [16..10]         }
  18.   Dum:=Port[$03DA];                   { reset to input by dummy read  }
  19.   Port[$03C0]:=$20 or $13;            { smooth pan = register $13     }
  20.   Port[$03C0]:=(SLIDE and 3) Shl 1;   { use bits [1..0], make it 0-2-4-6
  21. }
  22.  End;
  23.  
  24.  
  25. BEGIN {main}
  26.  
  27.   setvidmode($13);
  28.   SLIDE:=0;
  29.  
  30.   { draw a quick test pattern directly to video memory }
  31.   For T:= 0 to 63999 do MEM[$A000:T]:=(T mod (317 + T div 10000)) and
  32. 255;
  33.  
  34.   repeat
  35.    Vgabase(-1,-1);  { scroll smoothly in UPPER LEFT direction }
  36.    Delay(14);
  37.   until Keypressed;
  38.   ch:=Readkey;
  39.  
  40.   repeat
  41.    Vgabase( 1, 1);  { scroll smoothly in LOWER RIGHT direction }
  42.    Delay(14);
  43.   until Keypressed;
  44.   ch:=Readkey;
  45.   setvidmode($3);
  46.  
  47. END.
  48.